const Koa = require('koa'); // 框架 express koa 小型简单   egg 企业级比较复杂
const Router = require('koa-router'); // koa 框架生态体系中的路由中间件
// 静态服务器中间件  动态
const server = require('koa-static'); // 服务器上的静态资源
const koaBody = require('koa-body'); // post 请求体中间件
const path = require('path');
const fs = require('fs');
const tinify = require('tinify');
let app = new Koa();

tinify.key = 'WmG89ZPmyvvWFmtNW9L3CC6JcTpP7tTL';

const home = server(path.join(__dirname) + '/public/');
app.use(home);

app.use(koaBody({
  multipart: true, /* 附件 */
  formidable: {
    maxFileSize: 2000*1024*1024 //
  }
}))



let router = new Router(); //后端路由    前端路由 BrowserRouter|HashRouter 
// post url /uploadPic   async 耗时任务 控制器
// ctx , express (req, res) => {}
// koa  ctx = req + res
// 创建了路由中间件
let new1;
router.post('/uploadPic', async (ctx) => {
  // post 请求体 需要一个中间件， 把二进制数据报 收集起来 
  // file 对象
  // 复杂
  // await 写入文件
  const file = ctx.request.files.file;  // 
  // console.log(file);
  const reader = fs.createReadStream(file.path); // 读
  const myDate = new Date();
  const newFilename = myDate.getTime() + '.' + file.name.split('.')[1];
  console.log(newFilename);
  const targetPath = path.join(__dirname,
     './public/images/') + newFilename;
  new1 = targetPath;
  console.log(targetPath);
  const upStream = fs.createWriteStream(targetPath);
  reader.pipe(upStream);
  // res.send()
  ctx.body = '上传成功';
})
router.get('/zipimg', async (ctx) => {
  // req + res 这一次用户访问web 的上下文环境
  // context ctx 
  // 压缩功能
  let source = tinify.fromFile(new1);
  source.toFile(new1);
  ctx.body = '压缩成功';
})
// 挂载一下
// router 所有的routes 
// Methods GET POST DELETE  ...
app
  .use(router.routes())
  // get post ....
  .use(router.allowedMethods())

app.listen(6300, () => {
  console.log('服务器运行中')
})
